<?php
class SklepModel{	
	
	protected function zapiszUstawieniaSklepu(){
		global $config;
		foreach ($config->ustawienia_sklepu as $id => $wartosc) {
			$id__ = tools::__adodb('getOne',"SELECT id  FROM ".SKSETTIN." WHERE id = ".tools::__mres($id),true,$this->db); 
			if($id == $id__){
				tools::__adodb("exec","UPDATE ".SKSETTIN." SET wartosc = ".tools::__mres($wartosc)." WHERE id = ".tools::__mres($id),true,$this->db);
			}else{
				tools::__adodb("exec","INSERT INTO ".SKSETTIN." (id, wartosc) VALUES (".tools::__mres($id).",".tools::__mres($wartosc).");",true,$this->db);
			}
		}
	}	
	
	/**
	 * ustawienia, konfiguracja sklepu
	 * @return unknown_type
	 */
	protected function pobiezUstawienia(){
		$q__ = "SELECT id, wartosc FROM ".SKSETTIN;
		return tools::__adodb('getAssoc',$q__,true,$this->db);
	}
	
	/**
	 * zapis do bazy nowej kategorii
	 * @return unknown_type
	 */
	protected function zapiszNowaKategorieDoBazy(){
		global $config;
		$q__ = "SELECT MAX(skcLp) FROM ".SKCATEGO." WHERE skcpID = ".tools::__mres($config->skcpID);
		$lp__ = tools::__adodb('getOne',$q__,true,$this->db);
		$lp__++;
		$q__ = "INSERT INTO ".SKCATEGO." (skcID,skcpID,skcStatus,skcLp,skcStan) 
			VALUES (NULL,".tools::__mres($config->skcpID).",0,{$lp__},0)";
		tools::__adodb('exec',$q__,true,$this->db);		
		
		$this->skcID = $this->db->lastInsertId();
		
		if(is_array($config->skcNazwa)){
			foreach ($config->skcNazwa as $lang => $skcNazwa__) {
				$skcOPis__ = (isset($config->skcOpis[$lang])) ? $config->skcOpis[$lang] : '';
				$q__ = "INSERT INTO ".SKCATELA." (skcID,skcLang,skcNazwa,skcOpis) 
					VALUES (".tools::__mres($this->skcID).",'{$lang}',".tools::__mres($skcNazwa__).",".tools::__mres($skcOPis__).")";
				tools::__adodb('exec',$q__,true,$this->db);				
			}
		}else{
			$q__ = "INSERT INTO ".SKCATELA." (skcID,skcLang,skcNazwa) 
				VALUES (".tools::__mres($this->skcID).",'{$config->__lang}',".tools::__mres($config->skcNazwa).")";
			tools::__adodb('exec',$q__,true,$this->db);
		}
		return $this->skcID;
	}
	
	/**
	 * zapis edytowanej kategorii do bazy
	 * @return unknown_type
	 */
	protected function zapiszEdytowanaKategorieDoBazy(){
		global $config;		
		if(is_array($config->skcNazwa)){
			foreach ($config->skcNazwa as $lang => $skcNazwa__) {
				$q__ = "SELECT COUNT(*) FROM ".SKCATEGO." a 
					LEFT JOIN ".SKCATELA." b ON b.skcID = a.skcID 
					WHERE b.skcLang = '{$lang}' AND a.skcID = '{$config->skcID}'";
				$istnieje = tools::__adodb('getOne',$q__,true,$this->db);
				if($istnieje == 1){
					$q__ = "UPDATE ".SKCATELA." SET skcNazwa = ".tools::__mres($skcNazwa__)."
						WHERE skcID = ".tools::__mres($config->skcID)." AND skcLang = ".tools::__mres($lang);
					tools::__adodb('exec',$q__,true,$this->db);	
				}else{
					$q__ = "INSERT INTO ".SKCATELA." (skcID,skcLang,skcNazwa) 
					VALUES (".tools::__mres($config->skcID).",'{$lang}',".tools::__mres($skcNazwa__).")";
					tools::__adodb('exec',$q__,true,$this->db);		
				}
			}
			
		}else{
			$q__ = "UPDATE ".SKCATELA." SET skcNazwa = ".tools::__mres($config->skcNazwa)."
				WHERE skcID = ".tools::__mres($config->skcID)." AND skcLang = ".tools::__mres($config->skcLang);
			tools::__adodb('exec',$q__,true,$this->db);
		}	

		if(is_array($config->skcOpis)){
			foreach ($config->skcOpis as $lang => $Opis__) {
				$q__ = "SELECT COUNT(*) FROM ".SKCATEGO." a 
					LEFT JOIN ".SKCATELA." b ON b.skcID = a.skcID 
					WHERE b.skcLang = '{$lang}' AND a.skcID = '{$config->skcID}'";
				$istnieje = tools::__adodb('getOne',$q__,true,$this->db);
				if($istnieje == 1){
					$q__ = "UPDATE ".SKCATELA." SET skcOpis = ".tools::__mres($Opis__)."
						WHERE skcID = ".tools::__mres($config->skcID)." AND skcLang = ".tools::__mres($lang);
					tools::__adodb('exec',$q__,true,$this->db);	
				}else{
					$q__ = "INSERT INTO ".SKCATELA." (skcID,skcLang,skcOpis) 
					VALUES (".tools::__mres($config->skcID).",'{$lang}',".tools::__mres($Opis__).")";
					tools::__adodb('exec',$q__,true,$this->db);		
				}
			}
		}		
	}
	
	/**
	 * pobiera dane kategorii z bazy
	 * @param $skcID
	 * @param $lang
	 * @param $pgStatus
	 * @return unknown_type
	 */
	protected function pobiezDaneKategoriizBazy($skcID = null,$lang=null, $skcStatus=''){
		global $objSession,$config;
		if(is_null($skcID)){
			// lista wszystkich kategorii dla domyslnego jezyka
			if ( $objSession->IsLoggedIn()  && $objSession->GetUserData("stanowisko") == 'a'){			
				$q__ = "SELECT a.*, b.skcNazwa, b.skcLang, b.skcOpis FROM ".SKCATEGO." a 
					LEFT JOIN ".SKCATELA." b ON b.skcID = a.skcID 
					WHERE b.skcLang = '{$config->__lang}'  ORDER BY a.skcLp";
			}else{
				$q__ = "SELECT a.*, b.skcNazwa, b.skcLang, b.skcOpis FROM ".SKCATEGO." a 
					LEFT JOIN ".SKCATELA." b ON b.skcID = a.skcID 
					WHERE b.skcLang = '{$config->__lang}' 
					AND a.skcStatus = 0 	ORDER BY a.skcLp"; 				
			}
			return tools::__adodb('getAll',$q__,true,$this->db);
		}else{
			if  ($lang != null){
				// kategoria dla wybranego jezyka
				$q__ = "SELECT a.*, b.skcNazwa, b.skcOpis, b.skcLang FROM ".SKCATEGO." a 
					LEFT JOIN ".SKCATELA." b ON b.skcID = a.skcID 
					WHERE b.skcLang = '{$lang}' AND a.skcID = '$skcID'";
				return tools::__adodb('getRow',$q__,true,$this->db);
			}else{
				// kategoria wiele jezykow
				$q__ = "SELECT a.*, b.skcNazwa, b.skcOpis, b.skcLang FROM ".SKCATEGO." a 
					LEFT JOIN ".SKCATELA." b ON b.skcID = a.skcID 
					WHERE a.skcID = '$skcID'";
				return tools::__adodb('getAll',$q__,true,$this->db);							
			}
		}
	}
	
	
	protected function pobiezJednaKategorieDla_skpID($skpID = null){
		global $config;
		if(!is_null($skpID)){
			$q__ = "SELECT a.*, b.skcNazwa, b.skcLang, b.skcOpis FROM ".SKCATEGO." a 
			LEFT JOIN ".SKCATELA." b ON b.skcID = a.skcID 
			WHERE b.skcLang = '{$config->__lang}' 
				AND a.skcID = (SELECT skcID FROM  ".SKPRODUK." WHERE skpID = '{$skpID}')";
			return tools::__adodb('getAll',$q__,true,$this->db);
		}
	}
	
	protected function pobiezJednaDomyslnaKategorie(){
			$q__ = "SELECT skcID FROM  ".SKCATEGO." LIMIT 1";
			return tools::__adodb('getOne',$q__,true,$this->db);			
	}	
	
	protected function usunKategorieSklepuZBazy($skcID__){
		$this->pobierzListeSubkategoriiSklepu($skcID__);
		$kategorie_ = explode(';',$this->subkategorie.$skcID__);
		if (!is_array($kategorie_)) return;
		foreach ($kategorie_ as $subCategID) {
			if(is_numeric( $subCategID)){
				
				$query = "SELECT a.skpID, a.skcID FROM ".SKPRODUK." a 
					WHERE a.skcID = ".tools::__mres($subCategID); 

				$oferty_ = tools::__adodb('getAll',$query,true,$this->db);

				tools::__adodb("exec","DELETE FROM ".SKCATEGO." WHERE skcID = '{$subCategID}'",true,$this->db);
				tools::__adodb("exec","DELETE FROM ".SKCATELA." WHERE skcID = '{$subCategID}'",true,$this->db);				
				
				if (is_array($oferty_))
				foreach ($oferty_ as $key => $produkt) {
					$this->usunProduktSklepuZBazy($produkt['skcID'],$produkt['skpID']);
				}	
			}
		}
	}
	
	
	protected function usunProduktSklepuZBazy($skcID,$skpID){
	
		tools::__adodb("exec","DELETE FROM ".SKPRODUK." WHERE skpID = '{$skpID}'",true,$this->db);
		tools::__adodb("exec","DELETE FROM ".SKPRODLA." WHERE skpID = '{$skpID}'",true,$this->db);
		
		$curFile = "{$skcID}_{$skpID}_produkt.jpg";
		$thumbs__ = $this->pobierzListeThumbsDlaPliku($this->folder,$curFile);
		if(!is_array($thumbs__)) return;
		foreach ($thumbs__ as $__file){
			tools::_delete_file($__file);
		}			
		tools::_delete_file($this->folder.$curFile);		
	}

	protected function pobierzListeThumbsDlaPliku($target,$file){
		global $files;
		$exceptions=array('.','..');
		$pattern="({$file}(.*).thumb$)";
		if (!$sourcedir=@opendir($target)) return false;
		$i=0;
		while(false!==($sibling=readdir($sourcedir))){
			if(!in_array($sibling,$exceptions)){
				$object=str_replace('//','/',$target.'/'.$sibling);
				if(is_dir($object)){
					$this->pobierzListeThumbsDlaPliku($object,$file);
				}
				
				if(is_file($object) && preg_match($pattern,$object)){
					$files[$i] = $object;
				}
				$i++;
			}
		}
		closedir($sourcedir);
		return $files;	
	}
	
	protected function zapiszNowyProduktDoBazy(){
		global $config;
		$q__ = "SELECT MAX(skpLp) FROM ".SKPRODUK." WHERE skcID = ".tools::__mres($config->skcID);
		$lp__ = tools::__adodb('getOne',$q__,true,$this->db);
		$lp__++;
		$q__ = "INSERT INTO ".SKPRODUK." (skpID,skcID,skpSymbol,skpStatus,skpLp,
			skpStan,skpCena,skpCzyPromocja,skpCenaPromocyjna,skpCzasPromocji,
			skpWaluta,skpJednMia,skpStawVat,skpSprzedano,skpPrzyjeto) 
			VALUES (NULL,
			".tools::__mres($config->skcID).",
			".tools::__mres($config->skpSymbol).",
			".tools::__mres($config->skpStatus).",
			".tools::__mres($config->skpLp).",
			".tools::__mres($config->skpStan).",
			".tools::__mres($config->skpCena).",
			".tools::__mres($config->skpCzyPromocja).",
			".tools::__mres($config->skpCenaPromocyjna).",
			".tools::__mres($config->skpCzasPromocji).",
			".tools::__mres($config->skpWaluta).",
			".tools::__mres($config->skpJednMia).",
			".tools::__mres($config->skpStawVat).",
			0,
			".tools::__mres($config->skpStan).")";
		tools::__adodb('exec',$q__,true,$this->db);		
		
		$this->skpID = $this->db->lastInsertId();
		
		if(is_array($config->skpNazwa)){
			foreach ($config->skpNazwa as $lang => $skpNazwa__) {
				$skpOPis__ = (isset($config->skpOpis[$lang])) ? $config->skpOpis[$lang] : '';
				$q__ = "INSERT INTO ".SKPRODLA." (skpID,skpLang,skpNazwa,skpOpis) 
					VALUES (".tools::__mres($this->skpID).",'{$lang}',".tools::__mres($skpNazwa__).",".tools::__mres($skpOPis__).")";
				tools::__adodb('exec',$q__,true,$this->db);				
			}
		}else{
			$q__ = "INSERT INTO ".SKPRODLA." (skpID,skpLang,skpNazwa) 
				VALUES (".tools::__mres($this->skpID).",'{$config->__lang}',".tools::__mres($config->skpNazwa).")";
			tools::__adodb('exec',$q__,true,$this->db);
		}

		$q__ = "UPDATE ".SKPRODUK." SET 
			skpSymbol = ".tools::__mres($config->skpSymbol).",
			skpCena = ".tools::__mres($config->skpCena).",	
			skpCzyPromocja = ".tools::__mres($config->skpCzyPromocja).",
			skpCenaPromocyjna = ".tools::__mres($config->skpCenaPromocyjna).",	
			skpCzasPromocji = ".tools::__mres($config->skpCzasPromocji).",
			skpWaluta = ".tools::__mres($config->skpWaluta).",
			skpJednMia = ".tools::__mres($config->skpJednMia).",
			skpStawVat = ".tools::__mres($config->skpStawVat).",
			skpStan = ".tools::__mres($config->skpStan)."				 
			WHERE skpID = ".tools::__mres($this->skpID);
		tools::__adodb('exec',$q__,true,$this->db);
		
	}
	
	protected function zapiszEdytowanyProduktDoBazy(){
		global $config;
		
		if(is_array($config->skpNazwa)){
			foreach ($config->skpNazwa as $lang => $skpNazwa__) {
				$q__ = "SELECT COUNT(*) FROM ".SKPRODUK." a 
					LEFT JOIN ".SKPRODLA." b ON b.skpID = a.skpID 
					WHERE b.skpLang = '{$lang}' AND a.skpID = '{$this->skpID}'";
				$istnieje = tools::__adodb('getOne',$q__,true,$this->db);
				if($istnieje == 1){
					$q__ = "UPDATE ".SKPRODLA." SET skpNazwa = ".tools::__mres($skpNazwa__)." 
						WHERE skpID = ".tools::__mres($this->skpID)." AND skpLang = ".tools::__mres($lang);
					tools::__adodb('exec',$q__,true,$this->db);	
				}else{
					$q__ = "INSERT INTO ".SKPRODLA." (skpID,skpLang,skpNazwa) 
					VALUES (".tools::__mres($this->skpID).",'{$lang}',".tools::__mres($skpNazwa__).")";
					tools::__adodb('exec',$q__,true,$this->db);		
				}
			}			
		}else{
			$q__ = "UPDATE ".SKPRODLA." SET skpNazwa = ".tools::__mres($config->skpNazwa)."				 
				WHERE skpID = ".tools::__mres($this->skpID)." AND skpLang = ".tools::__mres($config->__lang);
			tools::__adodb('exec',$q__,true,$this->db);
		}	

		if(is_array($config->skpOpis)){
			foreach ($config->skpOpis as $lang => $skpOpis__) {
				$q__ = "SELECT COUNT(*) FROM ".SKPRODUK." a 
					LEFT JOIN ".SKPRODLA." b ON b.skpID = a.skpID 
					WHERE b.skpLang = '{$lang}' AND a.skpID = '{$this->skpID}'";
				$istnieje = tools::__adodb('getOne',$q__,true,$this->db);
				if($istnieje == 1){
					$q__ = "UPDATE ".SKPRODLA." SET skpOpis = ".tools::__mres($skpOpis__)."
						WHERE skpID = ".tools::__mres($this->skpID)." AND skpLang = ".tools::__mres($lang);
					tools::__adodb('exec',$q__,true,$this->db);	
				}else{
					$q__ = "INSERT INTO ".SKPRODLA." (skpID,skpLang,skpOpis) 
					VALUES (".tools::__mres($this->skpID).",'{$lang}',".tools::__mres($skpOpis__).")";
					tools::__adodb('exec',$q__,true,$this->db);		
				}
			}
		}
		$q__ = "UPDATE ".SKPRODUK." SET 
			skpSymbol = ".tools::__mres($config->skpSymbol).",
			skpCena = ".tools::__mres($config->skpCena).",	
			skpCzyPromocja = ".tools::__mres($config->skpCzyPromocja).",
			skpCenaPromocyjna = ".tools::__mres($config->skpCenaPromocyjna).",	
			skpCzasPromocji = ".tools::__mres($config->skpCzasPromocji).",
			skpWaluta = ".tools::__mres($config->skpWaluta).",
			skpJednMia = ".tools::__mres($config->skpJednMia).",
			skpStawVat = ".tools::__mres($config->skpStawVat).",
			skpStan = ".tools::__mres($config->skpStan)."				 
			WHERE skpID = ".tools::__mres($this->skpID);
		tools::__adodb('exec',$q__,true,$this->db);
		
	}
	
	private function pobierzListeSubkategoriiSklepu($skcID__){
		global $config;
		$q__ = "SELECT a.skcID FROM ".SKCATEGO." a 
				LEFT JOIN ".SKCATELA." b ON b.skcID = a.skcID  
				WHERE skcpID = ".tools::__mres($skcID__)." AND b.skcLang = '{$config->__lang}'";
		$__kategorie = tools::__adodb('getCol',$q__,true,$this->db);
		if (!is_array($__kategorie)) return;
		$this->subkategorie .= join(';',$__kategorie).';';		
		foreach ($__kategorie as $categID__) {
			$this->pobierzListeSubkategoriiSklepu($categID__);
		}
	}
	
	protected function pobierzListeProduktowSklepu($skcID__){
		global $config;
		
		$this->subkategorie = '';
		$this->pobierzListeSubkategoriiSklepu($skcID__);
		$sub__ = explode(';',$this->subkategorie);
		$this->subkategorie = '(';
		if (is_array($sub__) && !empty($sub__))
		foreach ($sub__ as $sub__) {	
			if (!empty($sub__)) $this->subkategorie .= "'{$sub__}'".",";			
		}
		$this->subkategorie .= "'NULL')";

		$query = "SELECT a.*,	b.* ,( a.skpCena+(a.skpCena*a.skpStawVat)/100) AS skpCenaBrutto,
			(a.skpCenaPromocyjna+(a.skpCenaPromocyjna*a.skpStawVat)/100) AS skpCenaBruttoPromocyjna
			FROM ".SKPRODUK." a LEFT JOIN ".SKPRODLA." b ON b.skpID = a.skpID 
			WHERE a.skcID = ".tools::__mres($skcID__)." 
				AND b.skpLang = '{$config->__lang}' 
				AND a.skpCzyPromocja != 1 
				OR  a.skcID IN ".$this->subkategorie." 
				AND b.skpLang = '{$config->__lang}'  
				AND a.skpCzyPromocja != 1 
			ORDER BY a.skpCena  DESC ";
		
		return tools::__adodb('getAll',$query,true,$this->db);		
	}
	
	protected function pobierzListeProduktowPromocyjnychSklepu($skcID__ = null){
		global $config;
		$skcIDFiltr = (!is_null($skcID__)) ? " a.skcID = ".tools::__mres($skcID__)." AND " : "";
		$query = "SELECT a.*,	b.* ,( a.skpCena+(a.skpCena*a.skpStawVat)/100) AS skpCenaBrutto,
			(a.skpCenaPromocyjna+(a.skpCenaPromocyjna*a.skpStawVat)/100) AS skpCenaBruttoPromocyjna 
			FROM ".SKPRODUK." a LEFT JOIN ".SKPRODLA." b ON b.skpID = a.skpID 
			WHERE {$skcIDFiltr} b.skpLang = '{$config->__lang}' 
				AND a.skpCzyPromocja = 1 ORDER BY a.skpCena  DESC ";
		
		return tools::__adodb('getAll',$query,true,$this->db);		
	}
	
	protected function pobierzJedenProdukt($skpID__,$lang_=null){
		global $config;
		$lang = (is_null($lang_)) ? $config->__lang : $lang_;
		
		$query = "SELECT COUNT(*) 
			FROM ".SKPRODUK." a LEFT JOIN ".SKPRODLA." b ON b.skpID = a.skpID 
			WHERE a.skpID = ".tools::__mres($skpID__)." AND  b.skpLang = '{$lang}'"; 
		$istnieje = tools::__adodb('getOne',$query,true,$this->db);
		
		if ($istnieje == 1){		
			$query = "SELECT a.*,	b.* ,( a.skpCena+(a.skpCena*a.skpStawVat)/100) AS skpCenaBrutto,
			(a.skpCenaPromocyjna+(a.skpCenaPromocyjna*a.skpStawVat)/100) AS skpCenaBruttoPromocyjna 
				FROM ".SKPRODUK." a LEFT JOIN ".SKPRODLA." b ON b.skpID = a.skpID 
				WHERE a.skpID = ".tools::__mres($skpID__)." AND  b.skpLang = '{$lang}'"; 
			return tools::__adodb('getRow',$query,true,$this->db);
		}else{
			$query = "SELECT a.*
				FROM ".SKPRODUK." a 
				WHERE a.skpID = ".tools::__mres($skpID__);
			$oferta =  tools::__adodb('getRow',$query,true,$this->db);
			$oferta['skpLang'] = $lang;
			return $oferta;
		}
	}
	
	protected function pobierzJedenProduktDoEdycji(){
		$q__ = "SELECT a.*, b.* FROM ".SKPRODUK." a 
			LEFT JOIN ".SKPRODLA." b ON b.skpID = a.skpID 
			WHERE a.skpID = '{$this->skpID}'";
		$result = tools::__adodb('getAll',$q__,true,$this->db);
		return (is_array($result)) ? $result : false;
	}
	
	/**
	 * zapisuje zawartośc koszyka do bazy tranzakcji
	 * @param $tranzakacjaID
	 * @param $koszyk
	 * @return unknown_type
	 */
	protected function zapiszNowaTranzakcjeDoBazy($tranzakacjaID,$koszyk){
		if(is_array($koszyk) && !empty($koszyk)){
		 
			$q = "INSERT INTO ".SKSPRZED." (sksID,sksControl) VALUES (NULL,'{$tranzakacjaID}')";
			$result = tools::__adodb('exec',$q,true,$this->db);
			
			$sksID_ = $this->db->lastInsertId();
						
			foreach ($koszyk as $row => $prod) {
				$q = "INSERT INTO ".SKSPRZSZ." (sksID,skcID,skpID,skcNazwa,skpNazwa,skpIlosc,skpCena,skpWaluta,skpJednostka,skpSymbol,skpPhotoURL) 
				VALUES ('{$sksID_}','{$prod['KategoID']}','{$prod['ProdukID']}','{$prod['KategoNazwa']}'
				,'{$prod['ProdukNazwa']}','{$prod['ProdukIlosc']}','{$prod['ProdukCena']}','{$prod['ProdukWaluta']}'
				,'{$prod['ProdukJedn']}','{$prod['ProdukSymbol']}','{$prod['ProdukPhoto']}')";
				$result = tools::__adodb('exec',$q,true,$this->db);
			}
		}
	}
	
	protected function zapiszPotwierdzenieDoBazy(){
		global $config;
		$q = "UPDATE ".SKSPRZED." SET 
			sksStatus = ".tools::__mres($config->status).",
			sksT_id = ".tools::__mres($config->t_id).",
			sksAmount = ".tools::__mres($config->amount).",
			sksEmail = ".tools::__mres($config->email).",
			sksService = ".tools::__mres($config->service).",
			sksCode = ".tools::__mres($config->code).",
			sksUsername = ".tools::__mres($config->username).",
			sksPassword = ".tools::__mres($config->password).",
			sksT_status = ".tools::__mres($config->t_status).",
			sksDescription = ".tools::__mres($config->description).",
			sksP_info = ".tools::__mres($config->p_info).",
			sksP_email = ".tools::__mres($config->p_email).",
			sksT_date = ".tools::__mres($config->t_date).",
			sksMd5 = ".tools::__mres($config->md5)."
			WHERE sksControl = '{$config->control}'";
		$result = tools::__adodb('exec',$q,true,$this->db);
	}
	
}